﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        #region 创建和数据库的连接
        private void button1_Click(object sender, System.EventArgs e)
        {
            //创建连接字符串
            //server=PC-20230509OHUX;表示本地数据库引擎的服务器名
            //database=test;数据库名称
            //uid=sa;pwd=123;登录名称和id
            string connectionString = "server=PC-20230509OHUX;database=test;uid=sa;pwd=123";
            //建立和数据库的连接
            SqlConnection sqlConnection = new SqlConnection(connectionString);
            try
            {
                //打开数据库
                sqlConnection.Open();

                //创建要执行的sql语句
                //string strSql = "select * from Person";
                string strSql = "select * from peopleinfo";
                //创建用于执行sql语句的对象
                SqlCommand sqlCommand = new SqlCommand(strSql, sqlConnection);

                // 使用 SqlDataAdapter 填充数据集
                SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand);
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);

                // 绑定数据集到 DataGridView 控件
                dataGridView1.DataSource = dataSet.Tables[0];
                //sqlConnection.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        #endregion
        private void Form1_Load(object sender, EventArgs e)
        {

        }
        #region 在类文件下命名，通过类文件生成数据库中的表
        private void button2_Click(object sender, EventArgs e)
        {
            sqlHelper.CreateTable();//根据自定义的类文件生成数据库中的表
            MessageBox.Show("生成新的表成功");
        }
        #endregion

        #region 重新命名表
        private void button3_Click(object sender, EventArgs e)
        {
            sqlHelper.RenameTable(textBox1.Text.ToString());//重命名表
        }
        #endregion

        #region 插入单行数据
        private void button4_Click(object sender, EventArgs e)//插入单行数据
        {
            try
            {
                PeopleInfo pIfo = new PeopleInfo()
                {
                    Name = textBox2.Text.ToString(),
                    Age = int.Parse(textBox3.Text.ToString()),
                    Height = int.Parse(textBox4.Text.ToString()),
                    Weightt = int.Parse(textBox5.Text.ToString()),
                    PhoneNum =long.Parse(textBox6.Text.ToString())
                };
                //通过对话框判断是否插入数据，选择是则插入数据，选择否则保持
                DialogResult dialogResult = MessageBox.Show("是否确定插入数据？", "确认插入", MessageBoxButtons.OKCancel);
                if (dialogResult == DialogResult.OK)
                {
                    //对输入的数据格式进行判断，
                    if (pIfo.Name!=null && pIfo.Age > 0 && pIfo.Height < 500 && pIfo.Weightt < 500 && pIfo.PhoneNum.ToString().Length == 11)
                    {
                        int res = sqlHelper.InsertObj(pIfo);
                        if (res == 1)
                            MessageBox.Show("成功插入数据");
                        else
                            MessageBox.Show("插入数据失败");
                    }
                    else
                    {
                        MessageBox.Show("输入的数据有错，请检查");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("发生错误：" + ex.Message);
            }
        }
        #endregion
        #region 删除选中的数据
        private void button5_Click(object sender, EventArgs e)
        {
            try
            {
                if (dataGridView1.SelectedRows.Count > 0)
                {
                    //选中datagridview控件中的某一行
                    DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];
                    //把选中的数据展示出来
                    string nameToDelete = selectedRow.Cells["Name"].Value.ToString();
                    int deleteResult =sqlHelper.DeleteSelectedRow(nameToDelete); // 调用删除方法
                    if (deleteResult > 0)
                    {
                        MessageBox.Show("成功删除数据");
                        // 刷新DataGridView或者重新加载数据
                    }
                    else
                    {
                        MessageBox.Show("删除数据失败");
                    }
                }
                else
                {
                    MessageBox.Show("请先选择要删除的行");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("发生错误：" + ex.Message);
            }
        }
        #endregion
    }
}
